package com.shoesdemo.utils;

import android.content.Context;
import android.content.SharedPreferences;

import androidx.annotation.NonNull;


import com.shoesdemo.BaseApplication;

import java.io.File;


/**
 * SharedPreferences工具类
 *
 * @author LiuFeng
 * @date 2018-8-14
 */
public class SpUtil {

    private static SharedPreferences sp;

    static {
        if (BaseApplication.mApplication != null) {
            sp = BaseApplication.mApplication.getSharedPreferences("tomorrow", Context.MODE_PRIVATE);
        } else {
            throw new NullPointerException("Context is null, Initialize Context before using the SpUtil");
        }
    }

    public static void setTextColor(int color) {
        setInt("color", color);
    }

    public static int getTextColor() {
        return getInt("color", 0);
    }

    public static void setBgColor(int color) {
        setInt("bgcolor", color);
    }

    public static int getBgColor() {
        return getInt("bgcolor", 0);
    }

    public static void setMusic(int color) {
        setInt("music", color);
    }

    public static int getMusic() {
        return getInt("music", 0);
    }

//    /**
//     * 保存Id
//     *
//     * @param cubeId
//     */
//    public static void setCubeId(String cubeId) {
//        setString(AppConstants.Sp.USER_CUBEID, cubeId);
//    }
//
//    public static String getCubeId() {
//        return getString(AppConstants.Sp.USER_CUBEID, "");
//    }
//
//    /**
//     * 保存名字
//     *
//     * @param name
//     */
//    public static void setUserName(String name) {
//        setString(AppConstants.Sp.CUBE_NAME, name);
//    }
//
//    public static String getUserName() {
//        return getString(AppConstants.Sp.CUBE_NAME, "");
//    }
//
//    /**
//     * 保存头像
//     *
//     * @param avator
//     */
//    public static void setUserAvator(String avator) {
//        setString(AppConstants.Sp.USER_AVATOR, avator);
//    }
//
//    public static String getUserAvator() {
//        return getString(AppConstants.Sp.USER_AVATOR, "");
//    }
//
//    /**
//     * 保存user
//     *
//     * @param userJson
//     */
//    public static void setUserJson(String userJson) {
//        setString(AppConstants.Sp.USER_JSON, userJson);
//    }
//
//    public static String getUserJson() {
//        return getString(AppConstants.Sp.USER_JSON, "");
//    }


    /**
     * 清空sp
     */
    public static void clear() {
        clearAll();
    }

    //==============================sp基础方法，用于封装具体方法=============================//

    /**
     * 获取String--基础方法
     */
    private static String getString(@NonNull String key, String defValue) {
        return sp.getString(key, defValue);
    }

    /**
     * 设置String--基础方法
     */
    private static void setString(@NonNull String key, String value) {
        sp.edit().putString(key, value).apply();
    }

    /**
     * 获取Boolean--基础方法
     */
    private static boolean getBoolean(@NonNull String key, boolean defValue) {
        return sp.getBoolean(key, defValue);
    }

    /**
     * 设置Boolean--基础方法
     */
    private static void setBoolean(@NonNull String key, boolean value) {
        sp.edit().putBoolean(key, value).apply();
    }

    /**
     * 获取Int--基础方法
     */
    private static int getInt(@NonNull String key, int defValue) {
        return sp.getInt(key, defValue);
    }

    /**
     * 设置Int--基础方法
     */
    private static void setInt(@NonNull String key, int value) {
        sp.edit().putInt(key, value).apply();
    }

    /**
     * 获取Long--基础方法
     */
    private static long getLong(@NonNull String key, long defValue) {
        return sp.getLong(key, defValue);
    }

    /**
     * 设置Long--基础方法
     */
    private static void setLong(@NonNull String key, long value) {
        sp.edit().putLong(key, value).apply();
    }

    /**
     * 包含key键--基础方法
     */
    private static boolean contains(@NonNull String key) {
        return sp.contains(key);
    }

    /**
     * 移除指定key--基础方法
     */
    private static void remove(@NonNull String key) {
        sp.edit().remove(key).apply();
    }

    /**
     * 清除全部--基础方法
     */
    private static void clearAll() {
        sp.edit().clear().apply();
    }
}
